Перейти к основному содержимому

Чек-лист самопроверки

Разработчику Архитектору

Чек-лист самопроверки

  1. Что такое Swift и для каких платформ он предназначен?
  2. Кто разработал Swift и когда он был представлен?
  3. Как Swift связан с Objective-C и Cocoa?
  4. Поддерживает ли Swift кросскомпиляцию под Linux или Windows?
  5. Какие есть примитивные типы данных (Int, Double, Bool, Character, String)?
  6. В чём разница между let и var?
  7. Как работает вывод типа в Swift?
  8. Что такое опционалы (Optional) и зачем они нужны?
  9. Как безопасно работать с опционалами (опциональная привязка, guard let, if let)?
  10. Что делает оператор принудительного развёртывания (!) и когда его стоит избегать?
  11. Что такое неявно развёрнутые опционалы (Implicitly Unwrapped Optional)?
  12. Как объявляются и вызываются функции?
  13. Что такое параметры с метками и без?
  14. Как работают значения по умолчанию и вариадические параметры?
  15. Что такое кортежи ((Int, String)) и где они применяются?
  16. Как работают замыкания и чем они отличаются от функций?
  17. Что такое трейлинговые замыкания?
  18. Как работают захваты значений в замыканиях (capture list)?
  19. Что такое структуры (struct) и чем они отличаются от классов?
  20. Что такое классы (class) и какие особенности у них есть (наследование, deinit)?
  21. Поддерживает ли Swift множественное наследование?
  22. Что такое инициализаторы (init) и какие виды бывают?
  23. Что такое фейловые инициализаторы (init?)?
  24. Как работает деинициализатор (deinit)?
  25. Что такое ARC и как он управляет памятью?
  26. Что такое сильные и слабые ссылки (weak, unowned)?
  27. Как избежать retain cycle в замыканиях и делегатах?
  28. Что такое перечисления (enum) и чем они мощнее аналогов в других языках?
  29. Как использовать ассоциированные значения в enum?
  30. Что такое сопоставление с образцом (switch) и почему оно должно быть исчерпывающим?
  31. Что такое протоколы (protocol) и как они реализуются?
  32. Может ли протокол содержать реализацию? (через extension)
  33. Что такое расширения (extension) и для чего они используются?
  34. Как добавить метод к существующему типу через расширение?
  35. Что такое обобщения (generics) и как они записываются?
  36. Как ограничить обобщённые типы с помощью протоколов?
  37. Что такое where-клаузулы в обобщениях?
  38. Как обрабатываются ошибки в Swift (throw, try, catch, do)?
  39. Что такое протокол Error и как создавать собственные ошибки?
  40. Что такое свойства: вычисляемые, наблюдаемые (willSet, didSet)?
  41. Что такое ленивые свойства (lazy)?
  42. Как работают методы типа (static, class)?
  43. Что такое вложенные типы?
  44. Как организована система модулей в Swift?
  45. Что такое Swift Package Manager и как им пользоваться?
  46. Как писать unit-тесты (XCTest)?
  47. Что такое @propertyWrapper и как он используется?
  48. Что такое Codable и как сериализовать объекты в JSON?
  49. Как работает многопоточность в Swift (GCD, async/await начиная с Swift 5.5)?
  50. Какие инструменты отладки и анализа доступны в Xcode (Instruments, Memory Graph Debugger)?

Освоение главы0%